Table of Contents

Стартап мобильного приложения по продаже продуков питания

Описание: Нужно разобраться, как ведут себя пользователи вашего мобильного приложения. Изучим воронку продаж.

Цель исследования

Входные данный

Описание данных

Ход исследования

  1. Обзор данных.
  2. Предподготовка данных
  3. Изучим и проверим данные
  4. Изучим воронку событий
  5. Анализ A/B-теста
  6. Выводы

Обзор данных.

Загружаем данные и подготовим их к анализу.

Путь к файлу

/datasets/logs_exp.csv

Импорт библиотек и загрузка данных

pandas - библиотека для загрузки и обработки данных

matplotlib.pyplot - библиотека для работы с графиками

datetime - библиотека для работой с датой

numpy - библиотека высокоуровневых математических функций

scipy.stats - библиотека для работы со статистический анализом данных

re - модуль для регулярных выражений

os - библиотека функций для работы с операционной системой

plotly - библиотека визуализации данных (для воронкообразных диаграмм)

Функция общей иформации и первичные проверки:

Загрузим файлы из папки /datasets и сохраним в переменные

Выведем первые 5 строк таблиц и общую информацию:

Начнем с названия колонок, напишим функцию и потом применим на нашу таблицу:

Хорошо, перейдем к дубликатам посмотрим на них (возможно были сбои при сборе информации вызвали дублирование строк)

Дубликаты появляются при различных событиях и с разными пользователями, нельзя точно сказать из за какой ошибки они возникают. Дубликатов меньше 0.2% так что удаление не сильно отразится на общих данных, можем удалить их:

Хорошо дубликатов 0 переходем к дате ивремени.

Преобразуем колонку event_timestamp в формат даты и времени и сделаем одельную колонку с датой:

Преобразуем колонку event_timestamp в формат даты и времени и сделаем одельную колонку с датой:

Отлично, переходим дальше.

Хорошо мы подготовили таблицу к дальйнешей работе предварительно:

После всех правок у нас осталось таблица с 5 колонками длинной в 243713 значений. Переходим дальше.

Предподготовка данных

Посмотри данные подробнее

Сколько всего событий и как часто они происходят:

Всего событий в таблице 243 713

Сколько всего пользователей:

Всего 7 551 пользователь.

Сколько событий на одного пользователя:

Посчитаем 95-й и 99-й перцентили количества событий на пользователя и выберем границу для определения аномальных пользователей.

200 событий на человека включают 99% пользователей.

Посмотрим как распределены данные:

Убирем аномальных пользователей.

Остается 209 333 события из 243 713

Посмотрим за какой период у нас дынные:

Посмотрим на графике как распределены данные:

С учетом графика можно сделать вывод что полными данными мы распологаем только с 1 августа 2019 года по 7 августа 2019 года

Посмотрим на эти данные, сколько их:

Какой процент данных от общего числа:

Посмотрим сколько пользователей мы отбросим:

Посмотрим какой процент пользователей мы отбросим:

Всего чуть более 1% данными и меньше 0.3% пользователей, можно ими пренебречь, оставим только полные данные:

Посмотрим как данные распределены между группами после фильтрации:

Различия в группах от среднего около 1% что допустимо.

Изучим воронку событий

Посмотрим как распределены события в отфильтрованных данных:

Вот как распределены данные по событиям:

1.5% пользователей минуют главный экран, тут есть несколько предположений.

Предпологаем что воронка строится так

MainScreenAppear > OffersScreenAppear > CartScreenAppear > PaymentScreenSuccessful

"Главный экран" > "Экран продуктов" > "Корзина" > "Успешная оплата"

Обучающие материалы не встраивается в воронку событий, так как не обязательно проходить обучение для совершения покупки.

Посчитаем какой процент пользователей дошел до каждого шага:

Больше всего людей не уходят дальше главного экрана.

Для большей наглядности построим воронкообразную диаграмму:

Посмотрим как это отражено в каждой из групп.

Анализ A/A-теста

Посмотрим сколько осталось пользователей в каждой из групп:

Посмотрим есть ли пересечения пользователей между группами(попадали ли пользователи в разные группы при проведение теста):

Отлично пересечений пользователей нет.

Проверим как прошло контрольное тестирование по группам 246 и 247.

Напишем функцию, для статистической проверки гипотез воспользуемся методом z-тест для пропорций :

Подготовим данные по группам

Сформулируем гипотезы:

Cтатистически значимых отличий между группами нет.

Посмотрим распределение в группах по событиям:

Самое популярное событие MainScreenAppear(Показ главного экрана) - соотношение групп 246 и 247 в этом событии 50/50%

Количество пользователей в различных группах различается не более, чем на 1% что допустимо.

Напишем функцию чтобы сравнить события разных групп:

Для проверки используем нашу функцию z-тест для пропорций, сформулируем гипотезы:

Cтатистически значимых отличий между группами нет, по всем событиям.

Можно сказать разбитие по группам работает корректно.

Анализ A/B-теста

Пререйдем к сравнению 246 и 248 групп Сформулируем гипотезы:

Тут так же нет онований отвергнуть нулевую гипотезу что различий нет.

Пререйдем к сравнению 247 и 248 групп Сформулируем гипотезы:

И здесь нет статистичиски значемых различий.

Пререйдем к сравнению объединенную 246 с 247 группой и 248 группой

Сформулируем гипотезы:

С объединенной группой тоже нет оснований считать доли разными.

Результаты и перепроверка:

С учетом что мы сделали 12 проверок, а при уровне 0.1 каждый 10 можно получать ложный результат.

Чтобы снизить групповую вероятность ошибки первого рода и скорректировать требуемые уровни значимости установим уровень равный количеству тестируемых групп применим метод Холма и Шидака

Зная это уменьшим уровень до 0.004 и перепроверим:

Сформулируем гипотезы:

Так же при измененном параметре различий в количестве пользователей между группами по событиям нет.

Выводы

Проведя анализ можно сделать вывод что тестирование прошло правильно:

По результатам теста можно остановить тест, признать его успешным пользователей не напугал новый шрифт в приложении.